package model;

import java.io.Reader;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 言初
 * Date: 2024-04-09
 * Time: 22:00
 */

// 使用这个类来实现 对数据库中的 user表的增删改查(JDBC)
// DAO : data access object -> 通过对象来访问数据

public class UserDao {

    // 新增用户（先不弄）

    // 删除用户（先不弄）



    // 查询用户

    //根据 用户id来查询 对应的用户
    public User selectById(int userId){
        Connection connection = null;
        PreparedStatement statement = null;
        ResultSet resultSet = null;

        try {
            // 建立连接
            connection = DBUtil.getConnection();
            // 构造sql语句
            String sql = "select * from user where useId = ?";

            statement = connection.prepareStatement(sql);

            statement.setInt(1,userId);

            resultSet = statement.executeQuery();

            // ID 是自增主键，所以 查询出来的结果会是唯一的，所以使用 if 判断就可以了
            if(resultSet.next()){
                User user = new User();
                user.setUseId(resultSet.getInt("useId"));
                user.setUsername(resultSet.getString("username"));
                user.setPassword(resultSet.getString("password"));

                return user;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            // 关闭操作
            DBUtil.close(connection,statement,resultSet);
        }

        return null;
    }

    //根据用户名进行查询对应的用户
    // 一个正常的网站 应该不会允许 有相同的用户名（用户名和昵称是不一样的）
    public User selectByName(String username){
        Connection connection = null;
        PreparedStatement statement = null;
        ResultSet resultSet = null;


        try {
            // 建立连接
            connection=DBUtil.getConnection();

            // 构建sql
            String sql = "select * from user where username = ?";

            statement = connection.prepareStatement(sql);
            statement.setString(1,username);

            resultSet = statement.executeQuery();

            if(resultSet.next()){
                User user = new User();

                user.setUseId(resultSet.getInt("useId"));
                user.setUsername(resultSet.getString("username"));
                user.setPassword(resultSet.getString("password"));

                return user;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            // 关闭
            DBUtil.close(connection,statement,resultSet);
        }

        return null; //没找到
    }

}
